Software applications take advantage of multiple processor cores to execute processes in parallel. The multiple processor cores can be processor cores from separate computers, servers or computing systems or multiple processor cores on a single processor chip. Execution of processes among the plurality of processor cores includes accessing data, which are typically arranged as data pages, by the various processor cores. Accessing data pages and executing processes between a given pair of processor cores may require synchronization between those processor cores, and the software applications that utilize multiple cores for execution need an efficient method to synchronize between cores. A common method for efficient synchronization uses a hardware instruction that performs atomic compare-and-update operations. For producer-consumer synchronization in particular, this requires instructions to be generated explicitly for this purpose in both the producer and consumer code. Therefore, solutions for providing synchronization between processor cores without having to modify the producer and consumer code are desired.